/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package modelo;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import laboratorio1.Conexion;

public class Orden {
    String codigoProducto,nombre;
    float total;
    int codigoOrden,codigopxo,cantidad;
    Date fecha;
    String patron = "yyyy-MM-dd";
    SimpleDateFormat formato = new SimpleDateFormat(patron);
    Conexion conexion = new Conexion();

    public int getCantidad() {
        return cantidad;
    }

    public void setCantidad(int cantidad) {
        this.cantidad = cantidad;
    }


    public int getCodigoOrden() {
        return codigoOrden;
    }

    public void setCodigoOrden(int codigoOrden) {
        this.codigoOrden = codigoOrden;
    }

    public int getCodigopxo() {
        return codigopxo;
    }

    public void setCodigopxo(int codigopxo) {
        this.codigopxo = codigopxo;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public float getTotal() {
        return total;
    }

    public void setTotal(float total) {
        this.total = total;
    }

    public String getCodigoProducto() {
        return codigoProducto;
    }

    public void setCodigoProducto(String codigoProducto) {
        this.codigoProducto = codigoProducto;
    }

    public Conexion getConexion() {
        return conexion;
    }

    public void setConexion(Conexion conexion) {
        this.conexion = conexion;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }



     public boolean insertar(Date fecha,String nombre,float total,Vector<Producto> vectorProducto,Vector<Integer> vectorCantidad)
    {

        try {
            String tira1 = "SELECT COUNT(DISTINCT codigoOrden) FROM orden";
            conexion.ejecutarquery(tira1);
            while (conexion.getRs().next())
                {
                    if(conexion.getRs().getInt(1)==0)
                    {
                        codigoOrden =1;
                    }
                    else
                    {
                        codigoOrden =conexion.getRs().getInt(1)+1;
                    }
                }

            String tira2 = " insert into orden (codigoOrden,fecha,nombrecliente,total) values ('"+codigoOrden+"','"+formato.format(fecha.getDate())+"','"+nombre+"',"+total+")";
            System.out.println(tira2);
            conexion.ejecutarquery(tira2);

            for (Iterator<Producto> it = vectorProducto.iterator(); it.hasNext();) {
                Producto producto = it.next();
                Iterator<Integer> itCantidad = vectorCantidad.iterator();
                cantidad =itCantidad.next();
                String tira3 = "SELECT COUNT(DISTINCT codigopxo) FROM productos_orden";
                conexion.ejecutarquery(tira3);
                while (conexion.getRs().next())
                {
                    if(conexion.getRs().getInt(1)==0)
                    {
                        codigopxo =1;
                    }
                    else
                    {
                        codigopxo =conexion.getRs().getInt(1)+1;
                    }
                }
                String tira4= " insert into productos_orden(codigopxo,cantidad,codigoOrden,codigoProducto) values ('"+codigopxo+"',"+cantidad+",'"+codigoOrden+"','"+producto.getCodigoProducto()+"')";
                conexion.ejecutarquery(tira4);
            }
            return true;
        } catch (SQLException ex) {
            Logger.getLogger(Orden.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
    }

    public Vector<Orden> catalogo(){
    Vector<Orden> vectorOrdenes = new Vector<Orden>();
    String tira="select * from orden";
    conexion.ejecutarquery(tira);
    try{

        while (conexion.getRs().next()){
            Orden  orden = new Orden();
            orden.setCodigoOrden(Integer.valueOf(conexion.getRs().getString("codigoOrden")));
            orden.setFecha(conexion.getRs().getDate("fecha"));
            orden.setNombre(conexion.getRs().getString("nombrecliente"));
            orden.setTotal(conexion.getRs().getInt("total"));
            vectorOrdenes.add(orden);
         }
    } catch (SQLException ex) {
        Logger.getLogger(Orden.class.getName()).log(Level.SEVERE, null, ex);
    }
    return vectorOrdenes;
    }
    
    public Vector<Listado> catalogoA(){
    Vector<Listado> vectorListado = new Vector<Listado>();
    String tira="SELECT codigoProducto,nombre,listado.cantidad,(precio*listado.cantidad) as precio  FROM Producto, (SELECT sum(productos_orden.cantidad) as cantidad,productos_orden.codigoproducto AS codigo FROM productos_orden GROUP BY productos_orden.codigoProducto ) listado WHERE listado.codigo=codigoProducto  ORDER BY(listado.cantidad,(precio*listado.cantidad))";
    conexion.ejecutarquery(tira);
    try{
        while (conexion.getRs().next()){
            Listado  listado = new Listado();
            listado.setCantidadProducto(Float.parseFloat(conexion.getRs().getString("cantidad")));
            listado.setNombreProducto(conexion.getRs().getString("nombre"));
            listado.setPrecioOrden(Float.parseFloat(conexion.getRs().getString("precio")));
            vectorListado.add(listado);
         }
    } catch (SQLException ex) {
        Logger.getLogger(Orden.class.getName()).log(Level.SEVERE, null, ex);
    }
    return vectorListado;
    }


    public Vector<Listado> catalogoD(){
    Vector<Listado> vectorListado = new Vector<Listado>();
    String tira="SELECT codigoProducto,nombre,listado.cantidad,(precio*listado.cantidad) as precio  FROM Producto, (SELECT sum(productos_orden.cantidad) as cantidad,productos_orden.codigoproducto AS codigo FROM productos_orden GROUP BY productos_orden.codigoProducto ) listado WHERE listado.codigo=codigoProducto  ORDER BY(listado.cantidad,(precio*listado.cantidad)) DESC";
    conexion.ejecutarquery(tira);
    try{
        while (conexion.getRs().next()){
            Listado  listado = new Listado();
            listado.setCantidadProducto(Float.parseFloat(conexion.getRs().getString("cantidad")));
            listado.setNombreProducto(conexion.getRs().getString("nombre"));
            listado.setPrecioOrden(Float.parseFloat(conexion.getRs().getString("precio")));
            vectorListado.add(listado);
         }
    } catch (SQLException ex) {
        Logger.getLogger(Orden.class.getName()).log(Level.SEVERE, null, ex);
    }
    return vectorListado;
    }


}